package atividade;

import java.util.List;

import dominio.ativacao.especializacao.FuncaoSinal;
import dominio.neuronio.especializacao.NeuronioPerceptron;
import dominio.padrao.Padrao;
import dominio.redeneural.RedeNeural;
import dominio.redeneural.especializacao.FeedForward;
import util.PatternFileParser;
import util.Util;

/**
 * @author Paulo Vitor
 * @author Roberto Su
 * 
 * @description
 *
 */
public class Atividade7 {
	
	/**
	 * @param args
	 */
	public static void main( String[] args ) {
		
		String[] nomePadroes = new String[]{
			"pombo","galinha","pato","ganso","coruja","gaviao","aguia","raposa",
			"cao","lobo","gato","tigre","leao","cavalo","zebra","vaca"
		};

		//recupera os padros de entrada da rede
		List<Padrao> padroesEntrada = PatternFileParser.getPadroesTreinamento( "animals.txt", 16, 13 );
		
		int i = 0;
		for( Padrao padrao : padroesEntrada ) {
			padrao.setDescricao( nomePadroes[i++] );
			//System.out.println(padrao);
		}
		
		//cria a estrutura da rede neural
		RedeNeural rna = new FeedForward();
		rna.criarCamadaNeural( padroesEntrada.size(), NeuronioPerceptron.class, new FuncaoSinal() );
		//System.out.println(rna);
		
		//
		rna.autoOrganizar(padroesEntrada);
		
		//
		Util.imprimirVetor( rna.estimularRedeNeural( padroesEntrada.get( 0 ) ) );
		
	}

}
